package com.linkgie.galaxyframework.persistence.data;

import com.linkgie.galaxyframework.data.EntityObject;

/**
 * 属性选择器；
 */
public interface TypedPropertySelector<T, R> {

    /**
     * 选择属性；
     * <p>
     * 在{@link #select(EntityObject)}方法中，调用 entity 的一个 getter 方法用来确定属性名称；
     * 
     * <p>
     * 注意：只能调用一次某个 getter 方法，如果调用多次或者没有调用任何 getter 方法，都会抛出异常；
     * 
     * @param entity
     */
    R select(T entity);
}
